The domain “blocksworld-4ops” is about manipulating a set of blocks on a table. The hand has one “hand” that can hold at most one block at a time. A block can be on the table, on top of another block, or held by the hand. Blocks can only be stacked if the block below is clear (i.e., there is nothing on top of it). The four actions available are:

1) pick-up 
   Example usage: (pick-up blockA)
   Meaning: The hand picks up blockA from the table.
   • Purpose: Allows the hand to pick up a clear block that is directly on the table.  
   • Precondition:  
     – blockA must be clear (i.e., there is no other block stacked on it).  
     – blockA must be on the table.  
     – The hand must be empty.  
   • Effect:  
     – The hand is now holding blockA.  
     – blockA is no longer clear because it is in the hand.  
     – blockA is no longer on the table.  
     – The hand is no longer empty.  

2) put-down
   Example usage: (put-down blockA)
   Meaning: The hand places blockA (currently in its hand) down onto the table.
   • Purpose: Places the block currently held by the hand back onto the table.  
   • Precondition:  
     – The hand must be holding blockA.  
   • Effect:  
     – blockA becomes clear.  
     – The hand becomes empty.  
     – blockA is now on the table.  
     – The hand is no longer holding blockA.  

3) stack
   Example usage: (stack blockA blockB)
   Meaning: The hand, holding blockA, places it on top of blockB.
   • Purpose: Stacks one block on top of another block that is clear.  
   • Precondition:  
     – The hand must be holding blockA.  
     – blockB must be clear.  
   • Effect:  
     – The hand becomes empty.  
     – blockA becomes clear, since nothing is on top of it.  
     – blockA is now on blockB.  
     – blockB is no longer clear.  
     – The hand is no longer holding blockA.  

4) unstack
   Example usage: (unstack blockA blockB)
   Meaning: The hand removes blockA from the top of blockB.
   • Purpose: Removes a block from on top of another block and picks it up.  
   • Precondition:  
     – blockA must be on top of blockB.  
     – blockA must be clear, meaning there is no block on top of it.  
     – The hand must be empty.  
   • Effect:  
     – The hand is now holding blockA.  
     – blockB becomes clear, since blockA is removed from it.  
     – blockA is no longer on blockB.  
     – blockA is no longer clear because it is in the hand.  
     – The hand is no longer empty.  